Harness Engineering-C端AIGC内容生产自优化实践
Harness Engineering: C端AIGC内容生产自优化实践
核心观点
蚂蚁保险"保险快查"深度解读页面生成系统(DIPG)的完整工程实践。核心架构翻转:C端AIGC不应把"实时生成给用户"作为默认假设,默认应是"离线生成→Harness把关→持久化产物给用户",实时只作兜底。
DIPG 通过三个 Agent(Host/Research/Verify)组成的 LangGraph 嵌套结构,实现了"生成→校验→精准修正→再校验"的闭环。只有通过 Verify Agent 的 HTML 才刷入 DB 暴露给用户。同时高频错误模式回灌 Research Agent prompt,形成持续自优化的三级 Harness 嵌套。
为什么不能实时直出
- 时延扛不住:Agentic 检索+生成几十秒,C端用户等不起
- 质量扛不住:LLM 生成 HTML 两类致命错误——渲染类(孤儿闭合标签让页面塌)和幻觉类(无中生有数据让用户读到假信息)
C端AIGC交付的本质要求:用户点开那一刻看到的 HTML 必须是已经被校验过的。
两条线上链路
- 离线链路(主路径):Host Agent 编排 Research→Verify→修正→再Verify 闭环,合格 HTML 刷入 DB,按品开启暴露给 C 端
- 实时链路(兜底):只跑一次 Research Agent,无 Verify,不修正。仅对未开启品兜底
两条链路的 Research Agent 完全同源——离线改进自动传导到实时。
三个Agent分工
| Agent | 职责 | 调用频率 |
|---|---|---|
| Host Agent | 总编排 + 按 fix_hint 精准修正 HTML | 全程在线 |
| Research Agent | 从零生成整份 HTML(不参与修正) | 只在第1轮被调一次 |
| Verify Agent | 程序化结构校验 + LLM 事实校验 | 每轮被调一次 |
关键设计选择:修正由 Host Agent 自己做(路B),而非再派 Research Agent 重新生成(路A)。原因:
- Research Agent 只擅长从零生成,再派容易全盘重写
- fix_hint 已精确定位,退化为轻量编辑,Host 调
edit_file即可 - 避免信息损耗(fix_hint 序列化为自然语言再传给 Research)
Verify Agent 两层校验
程序化校验(structural_check)
纯 Python HTMLParser,毫秒级响应零假阳性:
- rule5:标签完全闭合/无孤儿闭合标签/无交叉嵌套
- rule1:
标签不应出现 - rule3:
之间必须有实质内容 - rule6:
必须在顶层 - rule7:禁止内容重复
LLM 事实校验(llm_verify)
消费 /audit/ 目录下 Research Agent 的全部工具调用记录(原始数据供给),对比 HTML 中的数据做对齐分析。产出结构化 JSON(issue 列表 + fix_hint)。
关键设计:Verify Agent 必须看得到生产原料(/audit/),否则事实性校验失去工程意义。不是对 HTML 做静态语言分析,而是对 HTML 和数据源做对齐。
分工原则:能用程序判定的不让 LLM 看,LLM 的 token 全部投给语义/事实判断。
跨Agent数据共享
state["files"]:LangGraph 虚拟文件系统,Research Agent 通过write_file写入report.html,Verify Agent 通过extract_report_from_files读取/audit/:审计中间件自动记录所有工具调用的输入输出,Verify Agent 用ls /audit/+read_file读取task工具:Host Agent 通过多态 task 工具异步调用 SubAgent,上下文隔离(新 thread_id + 全新 messages)
三级 Harness 嵌套
| 层级 | 时间尺度 | 作用 |
|---|---|---|
| Level 3(线下) | 天/周 | 迭代 Verify Agent 本身(召回更准、误报更少) |
| Level 2(线上离线) | 分钟 | DIPG 主干——决定用户看到什么 |
| Level 1(线上实时) | 秒 | 兜底,仅未开启品触发 |
三层共享:同一个 Verify Agent、同一份 Research prompt、同一套 /audit/ 数据契约、同一组 benchmark 样本。
回灌机制(间接价值)
Verify Agent 高频发现的错误模式 → 半自动提炼 → 蒸馏为 Research Agent prompt 的硬规则。
示例:
- "优于市场85%"幻觉 → 回灌为"禁止盲目对比:没有竞品数据不得使用市场排名表述"
- "集团数据套用子公司" → 回灌为"实体对齐:严禁混用主体"
- 孤儿
效果:Verify Agent 不只是质检员,同时在替 Research Agent 的 prompt 产出训练信号——系统一次过能力持续前移到生成侧。
Research Agent Prompt 契约
合规用语硬规则(监管红线)
- 禁止"0免赔" → 合规"0免赔额"
- 禁止"确诊即赔" → 合规"首次确诊责任内疾病可赔"
事实性保证8条规则
- 信源优先级:产品档案 > 条款 > 网络搜索 > 通用知识
- 无数据不展示:缺失字段直接隐藏不臆测
- 禁止盲目对比
- 强制前置溯源:生成数据前先生成 HTML 注释说明来源(
),写不出注释说明是幻觉必须留空
结构强制比语义强制有效得多。不是求 LLM"请标注来源",而是让"写不出来源就不要写数据"变成自然的生成顺序。
踩坑经验
- 不要让 LLM 实时产物直出给 C 端用户——离线生成+Harness把关+刷DB+按需直出
- 生成器代码/prompt 在两条链路间严格同源——离线改进自动传导到实时兜底
- 能用确定性程序判定的不留给 LLM 判——两层分工明确
- Verify 必须看得到生产原料——
/audit/审计通道是事实性校验的前提
可迁移场景
- AI 生成的图表/图片/视频:离线跑合规+质量 verify,合格才入 CDN
- AI 写的文档/摘要:离线跑事实+风格 verify,合格才入产品
- AI 生成的营销素材/广告词:离线跑监管+事实 verify,合格才投放
关键引用
C端 AIGC 不应该把"实时生成给用户"作为默认假设。默认假设应该是"离线生成→Harness把关→持久化产物给用户",实时只作为兜底。
结构强制比语义强制有效得多。
Verify Agent 不只是质检员,它同时在替 Research Agent 的 prompt 产出训练信号。